package org.enea.xlab.lezione3.crudmanager;

import java.io.Serializable;
import java.util.HashMap;

import org.enea.xlab.lezione3.entity.Supplier;
import org.jboss.annotation.ejb.Service;



/**
 * @author redshift
 * Implementa un singleton (istanziazione di un singolo oggetto) 
 * con una annotazione specifica di JBoss non standard 
 * JEE6 ha l'annotazione @Singleton che fa la stessa cosa
 */
@Service
public class CRUDManagerSingletonImpl implements CRUDManagerLocal, Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private  HashMap<Long, Supplier> suppliersRegister=new HashMap<Long, Supplier>();
	
	/**
	 * return null se gia' esiste
	 *        altrimenti ritorna l'id dell'oggetto creato nel dominio 
	 *        
	 */
	public synchronized Long createSupplier(Supplier supplier) {
		
		if ( suppliersRegister.containsKey(supplier.getSupplierId()) )
		return null;

		suppliersRegister.put(supplier.getSupplierId(), supplier);

		return supplier.getSupplierId();
	}

	public synchronized Supplier readSupplier(Long supplierId) {
		
		return suppliersRegister.get(supplierId);
	}

	
	/**
	 * 
	 *
	 *  return true se l'oggetto esiste e l' upgrade e' andato buon fine
	 *         false in caso l'ogetto non esista nel dominio e quindi 
	 */
	public synchronized Boolean updateSupplier(Supplier supplier) {
		
		if (! suppliersRegister.containsKey(supplier.getSupplierId()))
			return false;
		
				suppliersRegister.put(supplier.getSupplierId(), supplier) ;
			
		
		return true;
	}

	/**
	 * return false quando non cancella nulla
	 */
	public synchronized Boolean deleteSupplier(Long supplierId) {
		
		if ( suppliersRegister.remove(supplierId) == null )
			return false;
		
		return true;
	}

	public HashMap getRegister() {
		// TODO Auto-generated method stub
		return null;
	}
}
